Organizing messages in a messaging system using social network information

ABSTRACT

A messaging system receives a message that is intended for a recipient, who is a user of a social networking system. An object associated with the message is identified based on the message content and/or metadata associated with the message. The messaging system accesses a social networking system database to obtain social information about a relationship between the recipient and the identified object. The message is then indexed using the social information, wherein an entry for the message is stored in a message index based on the social information. This process may be repeated for each received message, and multiple different message indexes may be generated for received messages to track different types of social information. A user interface for viewing messages uses the message index to organize the messages, such as to filter, categorize, and/or sort the messages in the display.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/153,457 filed on May 12, 2016 and issued as U.S. Pat. No. 9,590,944on Mar. 7, 2017, which is a continuation of U.S. patent application Ser.No. 14/586,127 filed on Dec. 30, 2014 and issued as U.S. Pat. No.9,356,905 on May 31, 2016, which is a divisional of U.S. patentapplication Ser. No. 13/952,372 filed on Jul. 26, 2013 and issued asU.S. Pat. No. 8,984,081 on Mar. 17, 2015, which is a continuation ofU.S. patent application Ser. No. 12/913,701 filed on Oct. 27, 2010 andissued as U.S. Pat. No. 8,499,048 on Jul. 30, 2013, the contents ofwhich are all incorporated by reference herein in their entirety.

BACKGROUND

This invention relates generally to messaging systems, and morespecifically to indexing and organizing messages for a user of a socialnetworking system using social network information.

People communicate with each other in an online environment by sendingand receiving messages. One area in which large numbers of messages areinvolved is in social networking. Social networking systems allow usersto form relationships with other users, applications, events, and manyother objects. Users can then communicate with other users in the socialnetwork by sending messages such as electronic mail (“e-mail”) and chatmessages.

Due to the vast number of users and objects in a social networkingsystem, a user can quickly be overwhelmed by a constant stream ofincoming messages. In addition, messages may come from sources that areoutside of the social networking system. It is difficult for a user todetermine what messages are important without identifying the source ofthe message or reading part of the message itself, such as the title orbody of the message. Further, a user's mailbox may contain millions oflines of text in tens of thousands of messages collected over decades ofuse, making it even more difficult for a user to distinguish relevantmessages from non-relevant messages.

SUMMARY

Embodiments of the invention leverage the social network information fora user of a social networking system to organize and display messagesfor the user in a messaging system. In this way, users of a socialnetworking system can better identify messages by their social relevancebased on the users' social relationships in the social networkingsystem.

In one embodiment, a social networking system identifies a plurality ofrecipients of a message, where the recipients of the message are usersof the social networking system. A social networking database thatincludes social information about a relationship between the recipientsof the message is accessed. For example, the social information mayindicate whether the recipient and sender have established a connectionin the social networking system. The message is organized based on thesocial information about the relationship between the recipients. Forexample, the message may be filtered, categorized, or sorted based onthe social information.

In one embodiment, a messaging system receives a message that isintended for a recipient, who is a user of a social networking system.An object associated with the message is identified. For example, theobject may be another user in the social networking system that sent themessage, and which is identified based on the message content and/ormetadata associated with the message. The messaging system accesses asocial networking system database to obtain social information about arelationship between the recipient and the identified object. A label isdetermined for the message in accordance with the relationship betweenthe recipient and the identified object of the social networking system,which can be used to tag the message. When a change in the socialrelationship about the relationship is identified, the label for themessage is updated based on the change.

In one embodiment, the message is indexed using the social information,wherein an entry for the message is stored in a message index based onthe social information. This process may be repeated for each receivedmessage, and multiple different message indexes may be generated forreceived messages to track different types of social information. Themessage index thus provides contextual information about the socialrelevance of the messages for the recipient of the message. The messageindex enables messages to be processed and presented in a number ofuseful ways. In one embodiment, the messaging system provides a userinterface to the user of the social networking system, where the userinterface displays a plurality of messages associated with the user(i.e. messages from the user's mailbox). To organize the messages in theuser interface, the messaging system accesses the index to obtain socialinformation for each of a plurality of messages and organizes themessages at least in part based on the social information associatedwith the messages. The organizing may comprise sorting, categorizing,and/or filtering the messages in the display, among various otherorganizing schemes that can leverage the message index. For example,messages received from friends of the user can quickly be identified assuch and displayed to the user, thereby providing the user with messagesthat are socially relevant to the user. Further, the message indexenables social context for the messages to be identified quickly whileonly consuming a small amount of computing resources, rather thanrequiring the messaging system to access the social networking systemdatabase whenever messages are to be displayed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high-level block diagram of a messaging system for indexingand organizing messages for a user of a social networking system usingsocial network information, according to one embodiment.

FIG. 2 is a flowchart of a method for indexing and organizing messagesfor a user of a social networking system using social networkinformation, according to one embodiment.

FIG. 3 illustrates a user interface for organizing messages for a userof a social networking system using social network information,according to one embodiment.

The figures depict various embodiments of the present invention forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the invention described herein.

DETAILED DESCRIPTION

Configuration Overview

FIG. 1 is a high-level block diagram of a messaging system for indexingand organizing messages for a user of a social networking system usingsocial network information, according to one embodiment. FIG. 1illustrates a social networking system 100, multiple client devices 180,and a third party website 190 connected by a network 170. In oneembodiment, the social networking system 100, client devices 180, andthird party website 190 each comprise of one or more computers.Additionally, the client devices 180 may comprise any type of computingdevice capable of sending or receiving messages, such as a mobile phone,laptop, netbook, tablet, cable box, television, etc.

A user of the client device 180 interacts with the social networkingsystem 100 via an application, such as a web browser or a nativeapplication, to perform operations such as browsing content, posting andsending messages, retrieving and sorting messages received from otherusers, and the like. Additionally, the third party website 190 can alsointeract with the social networking system 100 via a system-providedapplication programming interface (API) 150. For example, the thirdparty website can perform operations supported by the API, such asdelivering messages to the social network system 100, retrievingmessages stored by the social networking system 100, and obtainingsocial information about users of the social networking system 100.

The social networking system 100 comprises an object store 110, a graphinformation store 120, an indexing engine 140, and a post-processingmodule 155. The object store 110 stores information on objectsrepresented in or by the social networking environment. The graphinformation store 120 stores information on the relationships of theobjects in the object store 110. The indexing engine 140 receivesmessages from various sources, such as client devices 180 and thirdparty website 190. Messages can be in any electronic message format suchas electronic mail (“e-mail”) messages, chat messages, comments left ona user's webpage, and short message service (SMS) text messages. Theindexing engine 140 indexes the messages into the message index store150 using social relationship information from the graph informationstore 120. For example, a message sent from Adam to Bob, who arefriends, can be tagged as being from a friend and indexed using thissocial relationship information. The post-processing module 155 uses themessage index store 150 to generate a set of messages that can bepresented to a user of client device 180.

Social Graph Configuration

The object store 110 stores information on various objects tracked bythe social networking system 100. These objects may represent a varietyof things with which a user may interact in the social networking system100, including, without limitation, other users 111 of the socialnetworking system (represented, e.g., as a profile object for the user),applications 112 (e.g., a game playable within the social networkingsystem), events 113 (e.g., a concert that users may attend), groups 114to which users may belong, pages or hubs 115 (e.g., pages constituting aparticular organization's presence on the system), items of media 116(e.g., pictures, videos, audio, text, or any other type of mediacontent), locations 117 associated with a user (e.g., “Santa Clara,Calif., USA”), and even concepts 118 or other terms (e.g., “Victorianliterature”). An object in the object store 110 may represent an entityexisting within the social networking system (e.g., an application 112available on the social networking system), a virtual entity that existsoutside the domain of the social networking system (e.g., a website), ora real-world entity (e.g., a sports team or a retail store). The objectstore 110 may further store objects representing other data routinelyproduced by users of the social networking system 100, such as messages119, status updates, photos, and videos.

The object store 110 may store all of the objects existing within thesocial networking system 100, such as messages 119, or the image dataassociated with an image media item 116. Alternatively, for virtualentities existing outside of the social networking system 100, theobject store 110 may contain some form of pointer or reference to theentities, such as the uniform resource locator (URL) of an externalmedia item 116. Additionally, the object store 110 may also storemetadata associated with the objects, such as a name describing theobject (e.g. “Charles Williams” for a person, “Birthday Reminder” for anapplication, or “Penguin Fanciers” for a group), an image representingthe object (e.g., a user profile picture), one or more labels assignedto the object by users (e.g. the textual strings “game”, “crime”, and“strategy” for a strategy game application), or different e-mailaddresses of a user object (e.g. “jeremy1234@gmail.com” and“jeremy1234@yahoo.com”). Different types of objects may have differenttypes of metadata, such as a set of associated users 111 for a group114, a media type (e.g., “video”) for a media item object 116, and aunique user ID and name tokens (e.g., separate first and last names“Charles” and “Williams”) for a user object 111.

The graph information store 120 represents the objects of the objectstore 110 as nodes that are linked together in a “social graph.” Thegraph information store 120 thus comprises information about therelationships between or among the objects, represented as the edgesconnecting the various object nodes. Various examples of edges in thesocial graph include: an edge between two user objects representing thatthe users are have a relationship in the social networking system (e.g.,are friends, or have communicated, viewed the other's profile, orinteracted in some way), an edge between a user object and anapplication object representing that the user has used the application,an edge between a user object and a group object representing that theuser belongs to the group, and an edge between a user object and a pageobject representing that the user has viewed the page, to name just afew. For example, if one user establishes a relationship with anotheruser in the social networking system, the two users are each representedas a node, and the edge between them represents the establishedrelationship; the two users are then said to be connected in the socialnetwork system. Continuing this example, one of these users may send amessage to the other user within the social networking system. This actof sending the message is another edge between those two nodes, whichcan be stored and/or tracked by the social networking system. Themessage itself may be treated as a node. In another example, one usermay tag another user in an image that is maintained by the socialnetworking system. This tagging action may create edges between theusers as well as an edge between each of the users and the image, whichis also a node. In yet another example, if a user confirms attending anevent, the user and the event are nodes, where the indication of whetheror not the user will attend the event is the edge. Using a social graph,therefore, a social networking system may keep track of many differenttypes of objects and edges (the interactions and connections among thoseobjects), thereby maintaining an extremely rich store of sociallyrelevant information.

In one embodiment, edges in the graph information store 120 haveassociated metadata, such as a label describing the type of relationship(e.g., “friend” as the label between two user objects, “family” as thelabel between brother and sister), or an affinity value quantifying thestrength of the relationship. Further, a relationship degree, or“distance,” between any two objects can be ascertained by determiningthe number of edges on the shortest path between the objects. Forexample, two user objects that have an edge between them (e.g., denotinga friendship relationship) have a relationship degree (or “distance”) ofone and are considered first-order connections. Similarly, if a userobject A is a first-order connection of user object B but not of userobject C, and B is a first-order connection of C, then objects A and Chave a relationship degree of two, indicating that C is a second-orderconnection of A (and vice-versa).

In one embodiment, the social networking system 100 adds information tothe graph information store 120 in real time as it observes eventstaking place indicating relationships between the various objects, suchas a user 111 interacting with an application 112. Alternatively and/oradditionally, the graph information store 120 may be created based onexisting stored information from which relationships can be inferred.For example, the friend list of a user 111 might indicate that the userhas a friend relationship with another user, or the data for a group 114might indicate that some set of users has a membership relationship withthat group, and this information could be reflected in the graphinformation store 120.

U.S. application Ser. No. 12/193,702, filed Aug. 18, 2008, which isincorporated by reference in its entirety, describes an example of asocial networking system that maintains data for a number of differenttypes of objects used by the social networking system. U.S. applicationSer. No. 12/485,856, filed Jun. 16, 2009, which is incorporated byreference in its entirety, describes embodiments of a social networkingsystem that maintains objects and connections among the objects in asocial graph.

Indexing and Organizing Messages

The social networking system 100 comprises an indexing engine 140 thatreceives and indexes messages using relationships in the social graph(e.g., relationship between the sender and recipient of a message). Theindexes enable the social networking system 100 to efficiently processand generate a set of messages based on social relationship criteria.For example, the post-processing module 155 can use the indexes tofilter indexed messages by social relationship, thereby presenting auser of the social network system 100 with only the messages that aresocially relevant to that particular user.

The indexing engine 140 itself contains a number of sub-modules 141-145.Extraction module 141 receives messages and extracts information fromthe messages. Identification module 142 identifies objects in the socialgraph that match the extracted information, such as the sender andrecipient of the message. Tagging module 143 tags the messages with therelationships of the objects in the social graph. Indexing module 144indexes the messages into message indexes using the tags. Updatingmodule 145 updates the indexed messages as necessary to reflect changesin the social graph. The detailed operation of these various moduleswill be described by reference to FIG. 2, which illustrates a flowchartof a method for indexing and organizing messages for a user of a socialnetworking system using social network information, according to oneembodiment.

The extraction module 141 receives 205 a message that is directed to auser of the social networking system 100. As explained previously, amessage can be in any electronic message format. The extraction module141 can receive the message, for example, from a client 180 or a thirdparty website 190 in real-time as the message enters the socialnetworking system 110. Alternatively, the message may already be storedin the object store 110 and retrieved by the extraction module 141 sothat the message can be indexed.

The extraction module 141 extracts 210 information (the “extractedinformation”) from the received message. In one embodiment, theextracted information includes information that can be used to identifythe sender and recipient of the message. For example, informationextracted from the metadata associated with a message may include thename of the user who sent the message, the name of the user who receivedthe message, the sender's e-mail address, the recipient's e-mailaddress, or a unique identifier associated with a sender or recipient ofthe message. In another embodiment, the extracted information includesinformation related to the content of the message itself. For example,the extracted information can include the title of the message, URL'sembedded in the body of the message, an image attached to the message, atime-stamp associated with the message, etc.

The identification module 142 identifies 215 objects in the social graphthat match the extracted information. In one embodiment, the graphsearch module uses the extracted information to identify the object thatis the intended recipient of the message (the “message recipient”) andthe object that sent the message (the “message sender”). For example, ifan e-mail message is sent to “jeremy1234@facebook.com” and this e-mailaddress is associated with a particular user object, then the systemidentifies that user object as the message recipient.

In another embodiment, the identification module 142 also uses theextracted information to identify other objects that are related to thecontent of the message (the “related objects”). For example, the URL“www.yankees.com” may be extracted from the content of a message. In theobject store 110, this URL is associated with an object for the baseballteam the NEW YORK YANKEES. As such, the identification module identifiesthe object that corresponds to the NEW YORK YANKEES as a related objectfor the message.

Because the object store 110 is extremely large, it may be inefficientto search the entire object store 110 for objects that match theextracted information. Instead, it may be more efficient to identifymatching objects by searching objects that are socially relevant to themessage recipient. In one embodiment, the identification module 142first identifies the message recipient. The identification module 142then traverses the social graph to identify first-order and second-orderuser connections of the message recipient that match the extractedinformation. Specifically, the identification module 142 identifies aset of objects comprising the first-order connections of the messagerecipient. The identification module 142 then further identifies a setof all the first-order connections of the objects within the identifiedset, this latter set of connections constituting the second-orderconnections of the message recipient. From these objects, theidentification module 142 identifies objects (e.g. message sender orrelated objects) that match the extracted information.

It is appreciated that although the identification module 142 has beendescribed as identifying first- and second-order connections, any numberof orders of connection could be identified. For example, theidentification module 142 could also identify third order connections,in addition to those of first and second order. The exact configurationof the identification module 142 can be specified by settings providedby an administrator of the social networking system 100.

The tagging module 143 tags 220 a message with social networkinformation. Tagging comprises identifying social relationships from thesocial graph and associating the message with the social relationships.In one embodiment, a message is tagged with social relationships betweenthe message recipient and message sender. As discussed above, therelationship between one object and another is represented in the socialgraph with one or more edges. Each edge is also associated with a label(e.g. “friend”, “family”) and an affinity. A message may be tagged, inone embodiment, by associating these labels or affinities with themessage. If there is more than one edge linking the message recipientand message sender, the message can be tagged with more than one label.For example, Adam and Bob may be connected by one edge with the label“friend” and another edge with the label “high school classmates.” IfAdam sends a message to Bob, the message is tagged with both of theselabels. Further, if Adam and Bob are second-order friends that areindirectly connected by two serially connected edges in the socialgraph, the message can be tagged as being from a “friend of a friend.”

As another example, multiple user objects may be members of auser-created social group within the social networking system 100. Groupmembers can post messages to the group, which are then delivered toother group members. A group may be to an object in the social graph,and members of the group are linked to the group via edges of the socialgraph. If a message recipient and a message sender are both members ofthe same group, the message can be tagged with a social relationshipindicating that the message is from a fellow group member. Toillustrate, suppose that Adam and Bob are members of the group “Vegas2011.” Messages sent from Adam to Bob would be tagged with therelationship “Vegas 2011.”

In another embodiment, the tagging module 143 tags each message based onthe social relationship between the message recipient and any relatedobjects. For example, Bob may be the message recipient. The object store110 contains an object for the NEW YORK YANKEES. The websitewww.yankees.com is located within the content of the message, which isused to identify the YANKEES object as being related to the message. Bobis connected to the YANKEES object through an edge that has the label“fan of.” Therefore, the tagging module 143 tags the incoming messagewith the “fan of” label. Alternatively or additionally, the taggingmodule 143 can tag the message with an identifier for the relatedobject, such as the object name, which in this example is YANKEES.

The indexing module 144 indexes 225 the message using the socialrelationships associated with the message. Indexing messages enables thesocial networking system 100 to efficiently process and generate a setof messages based on social relationship criteria. In one embodiment,each user object is associated with a message index and any messagesthat are intended for the user object (e.g. if the object is the messagerecipient) are indexed into the message index. In a further embodiment,each user object may be associated with multiple message indexes, eachof which is designated to store messages associated with a particularsocial relationship. For example, there may be one message index formessages tagged with a “friend” relationship and a separate messageindex for messages tagged with a “high school classmates” relationship.In such an embodiment, a single message that is associated with multiplesocial relationships can be indexed into more than one message index.

In one embodiment, a message index may contain several data fields forstoring information about each indexed message. Because the contents ofa message itself are stored in the object store 110, each entry in theindex may include a data field that specifies the location of themessage contents in the object store 110. Each entry may further includeone or more data fields for the social relationship information (e.g.,friends, friends of friends, degree of connection, affinity, etc.) thatis associated with the message. In addition, each entry may also containany other information that is appropriate for storing in an index, suchas the title of the message, the sender of the message, a time-stampassociated with the message, etc. The indexing module 144 then storesthe indexes into the message index store 150.

In some embodiments, a message may have multiple recipients. For eachrecipient, the indexing module 144 indexes the message using the socialrelationships corresponding to the recipient. This includes socialrelationships between the message recipient and the message sender aswell as the social relationships between the message recipient and theother recipients. For example, suppose Adam sends an e-mail to both Boband Charles. The e-mail can be indexed into Bob's message index usingBob's social relationships with Adam and Charles. The e-mail can also beindexed into Charles' message index using Charles' social relationshipswith Adam and Bob.

The updating module 145 updates 230 the message indexes to reflect newchanges in the social graph. As described above, a user's social graphis dynamic and the relationship between objects in the social graph canchange over time. Changes in the social graph can affect the socialrelationship information associated with the messages. For example, amessage that was tagged as being from a “friend of a friend” may laterneed to be updated as being from a “friend” if the message recipientbecomes friends with the sender of the message. The updating module 145can be configured to update the indexes on a periodic basis.Alternatively, the updating module 145 can update the indexes wheneverthe number of changes to the social graph for a user exceeds a certainthreshold. For example, the updating may occur whenever a user adds morethan three new friends.

Once the indexes are created and stored in the message index store 150,the post-processing module 155 utilizes the indexes to enable a varietyof uses. In one embodiment, the post-processing module 155 organizesmessages using social relationship information from the message indexes.For example, a user's messages may be collected into an mailbox ofmessages and organized within the mailbox based the social relationshiptag for each message. The organized messages are output in a userinterface to a client 180 for display to a user of the social networkingsystem or output to a third party website 190 through the API 150.

Organizing messages in this way allows a user to easily identifymessages that are socially relevant. Socially relevant messages can bepresented in a manner that emphasizes their importance, whereas lesssocially relevant messages can be presented in a manner that emphasizestheir lack of importance.

In one embodiment, the post-processing module 155 organizes messages byfiltering messages using social relationship information. For example, auser of the social networking system may request to view messages in hismailbox received from “friends of friends” by entering a command in auser interface. As such, the post-processing module 155 accesses themessage indexes to identify messages that are tagged with the socialrelationship “friends of friends”. The post-processing module 155 thenoutputs this set of messages to the user, while hiding or not outputtingmessages tagged with other social relationships.

In a related embodiment, the post-processing module 155 organizesmessages by categorizing messages using social relationship information.Messages can be categorized by placing the messages into individualfolders. Each folder contains a sub-set of a user's messages that areplaced into the folder based on their perceived relevance. For example,referring to FIG. 3, illustrated is a user interface for organizingmessages for a user of a social networking system using social networkinformation, according to one embodiment. As shown, the user interfacehas interactive tabs 310-320 that allow messages to be placed intodifferent folders. Tab 310 represents the “primary” folder of the user'smailbox, and contains messages tagged as being from friends. Tab 315 isfor “other” messages, such as messages tagged as being from friends offriends, from group members, or messages tagged with other types ofsocial relationships. Tab 320 is for “spam” messages, such as messagesthat are not tagged with any social relationship. Here, the user hasselected the primary tab 310, which causes the post-processing module155 to access the message indexes in the message index store 150 toidentify messages that are tagged with a friend relationship. Thepost-processing module 155 then outputs a set of messages 350-365received from the user's friends.

In another embodiment, social relationships are only one of many factorsused to categorize messages. Other factors may include, for example,whether the message includes malicious information as determined by avirus-scanning tool, whether the sender of a message is a known sourceof spam, or whether the message contains an attachment. By consideringsocial relationships along with other factors, a message can beaccurately placed into a folder that best corresponds to the perceivedimportance of the message. In other embodiments, each tab (e.g. primary310, other 315, spam 320) may be its own separate window that issimultaneously displayed side by side with other windows.

In another embodiment, the post-processing module 155 organizes messagesby sorting (i.e. ordering) messages based on social relationshipinformation. Different types of social relationships can be prioritizedsuch that messages tagged with one type of social relationship (e.g.,friends) are displayed higher in a list than messages tagged with othertypes of social relationships (e.g., friends of friends). Messages canalso be sorted based on the strength of a social relationship. Forexample, the post-processing module 155 may sort messages within amailbox in descending order based on a user's affinity for the sender ofthe message. Messages from persons that a user has a high affinity forare pushed to the top of the mailbox, while messages from persons that auser has a low affinity for are pushed to the bottom of the mailbox.Additionally, messages may be sorted according to a default policy orsorted according to a user input entered via the user interface.

In another embodiment, the post-processing module 155 generates messagesfor display by changing the appearance of a message based on the socialrelationship associated with the message. For example, messages fromfamily members may be displayed with a green color while messages fromco-workers may be displayed with a yellow color. The appearance of amessage can be changed in any manner that is visually distinctive, suchas with color, highlighting, bolding, etc.

In a further embodiment, the post-processing module 155 generatesmessages that match a search query and are also tagged with a certainsocial relationship. For example, a user of a client 180 may enter atextual query for the keyword “party” in messages received from usersthat are “friends of friends.” The post-processing module 155 then usesthe message indexes to identify messages that are tagged with the socialrelationship “friends of friends” and executes the keyword search onthose messages.

Additional Considerations

The foregoing description of the embodiments of the invention has beenpresented for the purpose of illustration; it is not intended to beexhaustive or to limit the invention to the precise forms disclosed.Persons skilled in the relevant art can appreciate that manymodifications and variations are possible in light of the abovedisclosure.

Some portions of this description describe the embodiments of theinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs or equivalent electrical circuits,microcode, or the like. Furthermore, it has also proven convenient attimes, to refer to these arrangements of operations as modules, withoutloss of generality. The described operations and their associatedmodules may be embodied in software, firmware, hardware, or anycombinations thereof.

Any of the steps, operations, or processes described herein may beperformed or implemented with one or more hardware or software modules,alone or in combination with other devices. In one embodiment, asoftware module is implemented with a computer program productcomprising a non-transitory computer-readable medium containing computerprogram code, which can be executed by a computer processor forperforming any or all of the steps, operations, or processes described.

Embodiments of the invention may also relate to an apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the required purposes, and/or it may comprise ageneral-purpose computing device selectively activated or reconfiguredby a computer program stored in the computer. Such a computer programmay be stored in a non-transitory computer readable storage medium orany type of media suitable for storing electronic instructions, andcoupled to a computer system bus. Furthermore, any computing systemsreferred to in the specification may include a single processor or maybe architectures employing multiple processor designs for increasedcomputing capability.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the invention be limited notby this detailed description, but rather by any claims that issue on anapplication based hereon. Accordingly, the disclosure of the embodimentsof the invention is intended to be illustrative, but not limiting, ofthe scope of the invention, which is set forth in the following claims.

What is claimed is:
 1. A method comprising: receiving a message;accessing information about a relationship between a first objectassociated with the message and a second object associated with themessage; indexing the message into a message index based on theinformation about the relationship between the first object associatedwith the message and the second object associated with the message; andupdating the message index to reflect a change in the relationshipbetween the first object associated with the message and the secondobject associated with the message.
 2. The method of claim 1, furthercomprising: accessing a social networking database that includes theinformation about the relationship between the first object and thesecond object; and determining a label for the message that isindicative of the relationship between the first object and the secondobject; wherein indexing the message comprises indexing the message intothe message index based on the label for the message that is indicativeof the relationship between the first object and the second object. 3.The method of claim 1, further comprising: identifying a change in theinformation about the relationship between the first object and thesecond object, wherein the message index is updated based on the changein the information about the relationship between the first object andthe second object.
 4. The method of claim 1, wherein the message indexcomprises an index entry that comprises a reference to the message inassociation with the information about the relationship between thefirst object and the second object.
 5. The method of claim 1, whereinthe information about the relationship between the sender and therecipient used to index the message is a degree of connection betweenthe first object and the second object in a social networking system. 6.The method of claim 1, wherein the information about the relationshipbetween the first object and the second object used to index the messageis the second object's affinity for the first object.
 7. The method ofclaim 1, wherein the information about the relationship between thefirst object and the second object used to index the message is whetherthe first object and the second object have established a connection ina social networking system.
 8. The method of claim 1, furthercomprising: organizing messages based on the message index.
 9. Themethod of claim 1, further comprising: accessing information about arelationship between the first object associated with the message and athird object associated with the message; wherein the message is indexedinto the messages index based further on the information about therelationship between the first object associated with the message andthe third object associated with the message.
 10. The method of claim 1,wherein the first object is a sender of the message and the secondobject is a recipient of the message.
 11. A non-transitorycomputer-readable medium storing instructions, the instructions whenexecuted by at least one processor cause the at least one processor toperform operations comprising: receiving a message; accessinginformation about a relationship between a first object associated withthe message and a second object associated with the message; indexingthe message into a message index based on the information about therelationship between the first object associated with the message andthe second object associated with the message; and updating the messageindex to reflect a change in the relationship between the first objectassociated with the message and the second object associated with themessage.
 12. The non-transitory computer-readable medium of claim 11,wherein the operations further comprise: accessing a social networkingdatabase that includes the information about the relationship betweenthe first object and the second object; and determining a label for themessage that is indicative of the relationship between the first objectand the second object; wherein indexing the message comprises indexingthe message into the message index based on the label for the messagethat is indicative of the relationship between the first object and thesecond object.
 13. The non-transitory computer-readable medium of claim11, wherein the operations further comprise: identifying a change in theinformation about the relationship between the first object and thesecond object, wherein the message index is updated based on the changein the information about the relationship between the first object andthe second object.
 14. The non-transitory computer-readable medium ofclaim 11, wherein the message index comprises an index entry thatcomprises a reference to the message in association with the informationabout the relationship between the first object and the second object.15. The non-transitory computer-readable medium of claim 11, wherein theinformation about the relationship between the sender and the recipientused to index the message is a degree of connection between the firstobject and the second object in a social networking system.
 16. Thenon-transitory computer-readable medium of claim 11, wherein theinformation about the relationship between the first object and thesecond object used to index the message is the second object's affinityfor the first object.
 17. The non-transitory computer-readable medium ofclaim 11, wherein the information about the relationship between thefirst object and the second object used to index the message is whetherthe first object and the second object have established a connection ina social networking system.
 18. The non-transitory computer-readablemedium of claim 11, wherein the operations further comprise: organizingmessages based on the message index.
 19. The non-transitorycomputer-readable medium of claim 11, wherein the operations furthercomprise: accessing information about a relationship between the firstobject associated with the message and a third object associated withthe message; wherein the message is indexed into the messages indexbased further on the information about the relationship between thefirst object associated with the message and the third object associatedwith the message.
 20. The non-transitory computer-readable medium ofclaim 11, wherein the first object is a sender of the message and thesecond object is a recipient of the message.